﻿//-----------------------------------------------------------------------
// <copyright file="IUsageSettings.cs" company="Redmist">
//     Copyright (c) Damien T Smith. All rights reserved.
// </copyright>
// <author>Damien Smith</author>
//-----------------------------------------------------------------------

namespace Redmist.UsageMonitor.Properties
{
    using System.Drawing;
    using Redmist.UsageMonitor.CustomControls;

    /// <summary>Provides an interface to the application settings.</summary>
    public interface IUsageSettings
    {
        /// <summary>Gets or sets the usage retrieval automatic update interval setting.</summary>
        int UpdateInterval { get; set; }

        /// <summary>Gets or sets a value indicating whether the view should always be displayed as top-most.</summary>
        bool AlwaysOnTop { get; set; }

        /// <summary>Gets or sets a value indicating whether the application should be visible in the Windows taskbar.</summary>
        bool ShowInTaskbar { get; set; }

        /// <summary>Gets or sets a value indicating whether the application should be run minimized.</summary>
        bool RunMinimized { get; set; }

        /// <summary>Gets or sets a value indicating whether the application should automatically run when Windows starts.</summary>
        bool LoadOnWidowsStart { get; set; }

        /// <summary>Gets or sets a value indicating whether the view's close button should minimize the application.</summary>
        bool CloseToTray { get; set; }

        /// <summary>Gets or sets a value indicating whether the status notifications should be shown as tray balloons.</summary>
        bool TrayNotifications { get; set; }

        /// <summary>Gets or sets a value indicating whether usage updates should be logged to a file in the user's Documents folder.</summary>
        bool LogToFile { get; set; }

        /// <summary>Gets or sets a System.Drawing.Color representing the NotifyIcon's text color.</summary>
        Color IconTextColor { get; set; }

        /// <summary>Gets or sets a value indicating whether the icon text should have a shadow.</summary>
        bool IconTextShadowEnabled { get; set; }

        /// <summary>Gets or sets a System.Drawing.Color representing the NotifyIcon's text shadow color.</summary>
        Color IconTextShadowColor { get; set; }

        /// <summary>Gets or sets a value indicating whether the icon text should have a solid background.</summary>
        bool IconBackColorEnabled { get; set; }

        /// <summary>Gets or sets a System.Drawing.Color representing the NotifyIcon's background color.</summary>
        Color IconBackColor { get; set; }

        /// <summary>Gets or sets a value indicating whether the icon text should be rendered using ClearType.</summary>
        bool IconTextClearTypeEnabled { get; set; }

        /// <summary>Gets or sets a System.Drawing.Point representing the view's screen location.</summary>
        Point FormLocation { get; set; }

        /// <summary>Gets or sets a System.String representing the view's screen location.</summary>
        string LoginDetails { get; set; }

        /// <summary>Gets or sets a value indicating whether the user's phone number and password should be remembered.</summary>
        bool RememberLogin { get; set; }

        /// <summary>Gets or sets a Redmist.UsageMonitor.CustomControls.PlanType representing the type of off peak usage plan.</summary>
        PlanType PlanType { get; set; }

        /// <summary>Gets or sets the ratio of reduced off peak usage setting.</summary>
        int OffPeakRatio { get; set; }

        /// <summary>Gets or sets the fixed off peak quota setting.</summary>
        int FixedOffPeakQuota { get; set; }
    }
}
